Flask 动态映射路由

以下为Flask根据templates目录下的文件创建相同名称的路由,核心使用lamada函数实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from flask import Flask, render_template, Blueprint
import os

app = Flask(__name__)
bp = Blueprint(name='', import_name=__name__)

view_maker = lambda name: (lambda: render_template(name))
for temp in os.listdir(os.path.join('.', 'templates')):
if temp.__contains__('.'):
file_name = temp.split('.')[0]
endpoint = file_name
app.add_url_rule('/' + file_name, view_func=view_maker(temp), endpoint=endpoint)

if __name__ == '__main__':
app.run(debug=True)

根据这个代码可以写出很多有意思的东西,比如路由通过json或者yml来配置,而不再需要写蓝图之类的东西